package com.xlq.consultant.aiservice;

import dev.langchain4j.service.MemoryId;
import dev.langchain4j.service.SystemMessage;
import dev.langchain4j.service.UserMessage;
import dev.langchain4j.service.V;
import dev.langchain4j.service.spring.AiService;
import dev.langchain4j.service.spring.AiServiceWiringMode;
import reactor.core.publisher.Flux;

@AiService(
        wiringMode = AiServiceWiringMode.EXPLICIT,// 手动装配
        chatModel = "openAiChatModel",// 指定模型
        streamingChatModel = "openAiStreamingChatModel",// 指定流式模型
//        chatMemory = "chatMemory"
        chatMemoryProvider = "chatMemoryProvider",//配置会话记忆提供者
        contentRetriever = "embeddingStoreContentRetriever",//配置向量数据库检索对象
        tools = "reservationTools"
)
public interface ConsultantService {
    //用于聊天的方法,message为用户输入的内容
//    String chat(String message);
    // 流式处理
//    @SystemMessage(value = "你是传智教育提供的专业的AI志愿填报顾问，你只用来填报志愿")
    @SystemMessage(fromResource = "system.txt")
//    @UserMessage(value = "你是传智教育提供的专业的AI志愿填报顾问。{{it}}")
//    @UserMessage(value = "你是传智教育提供的专业的AI志愿填报顾问。{{msg}}")
    Flux<String> chat(@MemoryId String memoryId,@UserMessage String message);// @UserMessage标识用户信息
}
